package models

import (
	"base_srv/basic/config"
	"time"
)

type PassengerAppUpdate struct {
	Id                  uint32    `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	PassengerAppName    string    `gorm:"column:passenger_app_name;type:varchar(30);comment:乘客端app名称;not null;" json:"passenger_app_name"`                 // 乘客端app名称
	PassengerAppVersion string    `gorm:"column:passenger_app_version;type:varchar(20);comment:乘客端app版本号;not null;" json:"passenger_app_version"`          // 乘客端app版本号
	LaunchSystem        int8      `gorm:"column:launch_system;type:tinyint(1);comment:上线系统 1-全部 2-iOS 3-Android;not null;default:1;" json:"launch_system"` // 上线系统 1-全部 2-iOS 3-Android
	IsForceUpdate       int8      `gorm:"column:is_force_update;type:tinyint(1);comment:是否强制更新 1-是 2-否;not null;" json:"is_force_update"`                  // 是否强制更新 1-是 2-否
	UpdateText          string    `gorm:"column:update_text;type:varchar(50);comment:更新文本;not null;" json:"update_text"`                                   // 更新文本
	UserId              int32     `gorm:"column:user_id;type:int;not null;" json:"user_id"`
	UploadTime          time.Time `gorm:"column:upload_time;type:datetime;comment:上线时间;not null;" json:"upload_time"`               // 上线时间
	StartUpdateTime     time.Time `gorm:"column:start_update_time;type:datetime;comment:开始更新时间;not null;" json:"start_update_time"` // 开始更新时间
	CreateAt            time.Time `gorm:"column:create_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"create_at"`
	UpdateAt            time.Time `gorm:"column:update_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"update_at"`
	DeleteAt            time.Time `gorm:"column:delete_at;type:datetime;default:NULL;" json:"delete_at"`
}

func (p *PassengerAppUpdate) TableName() string {
	return "passenger_app_update"
}

// 乘客端app添加
func (p *PassengerAppUpdate) Create() error {
	return config.DB.Create(&p).Error
}

// 乘客端app修改
func (p *PassengerAppUpdate) Update() error {
	return config.DB.Updates(&p).Error
}

// 乘客端app删除
func (p *PassengerAppUpdate) Delete() error {
	return config.DB.Delete(&p).Error
}

// 乘客端app修改列表
func (p *PassengerAppUpdate) UpdateList() (list []PassengerAppUpdateResp, err error) {
	err = config.DB.Model(&PassengerAppUpdate{}).Select("passenger_app_update.id,passenger_app_update.passenger_app_name,passenger_app_update.passenger_app_version,passenger_app_update.launch_system," +
		"passenger_app_update.is_force_update,passenger_app_update.update_text,passenger_app_update.upload_time,passenger_app_update.start_update_time,user.real_name").
		Joins("left join user on user.id = passenger_app_update.user_id").
		Where("passenger_app_update.delete_at is null").Order("passenger_app_update.id desc").Find(&list).Error
	return
}

type PassengerAppUpdateResp struct {
	Id                  uint32
	PassengerAppName    string    `json:"passengerAppName,omitempty"`
	PassengerAppVersion string    `json:"passengerAppVersion,omitempty"`
	LaunchSystem        int8      `json:"launchSystem,omitempty"`
	IsForceUpdate       int8      `json:"isForceUpdate,omitempty"`
	UpdateText          string    `json:"updateText,omitempty"`
	RealName            string    `json:"realName,omitempty"`
	UploadTime          time.Time `json:"uploadTime"`
	StartUpdateTime     time.Time `json:"startUpdateTime"`
}
